Bagaimana Mendeklarasikan Variabel dan Konstanta?
Di bagian sebelumnya kamu sudah mempelajari arsitektur package Move on Sui dan gambaran struktur smart contract. Sekarang kita masuk lebih dalam ke dasar-dasar bahasa Move di Sui.
Keyword let
Di Move on Sui, keyword let dipakai untuk mendeklarasikan dan menginisialisasi variabel. Setelah dideklarasikan, variabel bisa diakses dan dimodifikasi (sesuai aturan kepemilikan / mutabilitas). Bentuk umum deklarasinya:
let <Variable> : <Type>
let <Variable> = <Expression>
let <Variable> : <Type> = <Expression>
Contoh (jangan perlu khawatir tipe, akan dibahas sebentar lagi). Ingat titik koma wajib di Move:
let a;
let b : u8;
let c = true;
let d : u8 = 10;
Ingat kita mendefinisikan object dengan struct, tapi untuk membuat instance-nya kita pakai let. Contoh:
module hello_world::hello_world {
// Mengimpor module object
use sui::object::UID;
use sui::tx_context::{Self, TxContext};
// Mendeklarasikan HelloWorldObject
struct HelloWorldObject has key {
id: UID,
}
// Constructor / init
fun init(ctx: &mut TxContext) {
// Inisialisasi HelloWorldObject dengan let
let object = HelloWorldObject {
id: object::new(ctx),
};
}
}
- Catatan: Contoh tidak untuk langsung dijalankan, hanya ilustrasi penggunaan konsep.
Perhatikan kita memakai object::new(ctx) dari module object saat menginisialisasi.
Keyword const
Keyword const dipakai untuk mendeklarasikan konstanta tingkat module (didefinisikan di luar fungsi dan bisa dipakai di seluruh module). Bentuknya:
const <Variable> : <Type> = <Expression>;
Poin penting:
- Nilainya tidak bisa diubah setelah didefinisikan.
- Hanya dapat diakses di dalam module yang sama.
- Umumnya dipakai untuk nilai tetap (misal batas maksimum, faktor tetap) yang ingin konsisten di seluruh module.
Contoh:
module examples::example {
const MAX : u64 = 100;
public fun is_max(num: u64): bool {
num == MAX
}
}
Penutup
Variabel dan konstanta adalah fondasi: dipakai untuk menyimpan informasi dan membangun object. Berikutnya kita bahas berbagai tipe data yang tersedia di Move on Sui.